#ifndef _SCENE_H_
#define _SCENE_H_

#include "Object/Object.h"
#include "Camera.h"


class Scene
{
private:
	Scene () {}
	~Scene () {}
	Scene (const Scene &);
	Scene& operator = (const Scene &);

public:
	static Scene * GetInstance ();
	static void DestroyInstance ();

	void Init();
	void Draw();
	void Update(float deltaTime );
	void CleanUp();
	Camera * GetCamera();

	void AddObject(Object *obj);
	void RemoveObject(Object *obj);
	void AddCamera(Camera *cam);
	
protected:
	static Scene * ms_pInstance;
	
	// Objects in the scene
	ObjectVector m_objects;
	
	// Cameras in the scene and the active camera
	CameraVector m_cameras;
	GLuint m_activeCamera;
};

#define SCENE Scene::GetInstance()
#define DESTROY_SCENE Scene::DestroyInstance();

#endif